// 1399. 统计最大组的数目
// 使用哈希计数，来统计各个数出现的次数，并记录最大值，再遍历哈希表，看最大值出现了多少次


#include <algorithm>
#include <unordered_map>
using namespace std;

class Solution 
{
public:
    int countLargestGroup(int n) 
    {
        unordered_map <int, int> hash;
        int maxValue = 0;
        for(int i = 1; i <= n; i++)
        {
            int tmp = i, key = 0;
            while(tmp)
            {
                key += tmp % 10;
                tmp /= 10;
            }
            hash[key]++;
            if(hash[key] > maxValue) maxValue = hash[key]; // 更新出现最频率最高的次数            
        }
        int count = 0;
        for(auto& kv : hash)
        {
            if(kv.second == maxValue) count++;
        } 

        return count;
    }
};